<?php if (!defined("DB_PEREFIX")) exit;

global $db, $template, $RUN, $GLOBAL_USER, $MODULE;

if (isset($_GET['id'])) $id = intval ($_GET['id']);

 
if (my_karma() >= $MODULE['new_blog_karma']) 
{ 	past_navblock (
						array (
								array ('Написать статью', '/blog/edit/add/', 'cat', 'add'),
								array ('Создать новый блог', '/blog/edit/new_blog/', 'cat', 'new_blog')
							)
						);
} 
else 
{
	past_navblock (
					array (
							array ('Написать статью', '/blog/edit/add/', 'cat', 'add')
							)
						);
}

if (isset($_GET['delete'])) 
{
	$id = intval ($_GET['delete']);
	$error = false;

	if (!is_admin() && !is_moderator()) 
	{
		$check = $db->num_rows ($db->query ("SELECT * FROM ".DB_PEREFIX."_articles WHERE art_id = $id AND art_author = ".$GLOBAL_USER['user_id']));
		if ($check != 1) $error = true;
	}

	if ($error == false) 
	{
		$del = $db->query ("DELETE FROM ".DB_PEREFIX."_articles WHERE art_id = $id");
		if ($del) 
		{ 
			site_message ('Статья удалена!'); 
			$db->query ("DELETE FROM ".DB_PEREFIX."_comments WHERE com_idi = $id AND com_category = 'articles'"); 
		}
		else 
			site_error ('Ошибка БД!'); 
	}
	else 
		site_error ('У Вас не такой статьи!'); 
}

if ($_GET['act'] == 'save') 
{
	$allowed_tags = array ('a','p','h1','h2','h3','h4','h5','h6','blockquote',
								'i','em','b','strong','u','ul','ol','li','sup',
								'table','tr','td','s','strike','font','img','nobr',
								'abbr','acronym','pre','code','br','cut','youtube', 'rutube');
	$allowed_string = '';
	foreach ($allowed_tags as $tag) $allowed_string .= '<'.$tag.'>';
	
	$header = strip_tags ($_POST['header']);
	$body = strip_tags ($_POST['big_text'], $allowed_string);
	$body = replace_symbols ($body);
	$body = clear_danger_html ($body);
	
	($_POST['auto_tag'] == 'yes') 
		? $auto_tag = 'yes'
		: $auto_tag = 'no';

	($_POST['comment'] == 'on')
		? $comments = 'on'		: $comments = 'off';
		

	$author = $GLOBAL_USER['user_id'];
	$cat = addslashes ($_POST['category']);

	$tags = trim (strip_tags ($_POST['tags']));
	$tags = htmlspecialchars ($tags, ENT_QUOTES);

	if (substr($tags, strlen($tags)-1) == ',') 
		$tags = substr($tags, 0, strlen($tags)-1);

	$error = '';

	($MODULE['public_now']) 
		? $visible = 'on' 
		: $visible = 'off';

	($MODULE['public_to_mainpage']) 
		? $public = 'yes' 
		: $public = 'no';

	$tid = intval ($_POST['tid']);
	
	if ($tid == 0) 
	{
		// FIXME: исправить на count
		$timer = $db->num_rows ($db->query ("SELECT * 
			FROM ".DB_PEREFIX."_articles 
			WHERE art_author = '$author' AND art_date > '".(time() - 250)."'"));

		$today = $db->num_rows ($db->query ("SELECT * 
			FROM ".DB_PEREFIX."_articles 
			WHERE art_author = '$author' AND art_date > '".(time() - (60 * 60 * (date("H")) + ( 60 * date("i"))  ))."'"));

		//$check_blog = $db->num_rows ($db->query ("SELECT * FROM ".DB_PEREFIX."_art_category WHERE cat_name = '$cat'"));
	
		if ($timer > 0) 
			$error .= '<li />Подождте, пожалуйста, 4 минуты!';

		if ($today >= 10) 
			$error .= '<li />Вы не можете добавлять за день более 10 статей!';

//		if ($check_blog == 0) 
//			$error .= '<li />Нет такого блога!';
	}
	else 
	{
		(is_admin() || is_moderator()) 
			? $options = '' 
			: $options = 'AND art_author = '.$GLOBAL_USER['user_id'];  // FIXME: Кавычки (?)

		// FIXME: Маразм
		$check = $db->num_rows ($db->query ("SELECT * FROM ".DB_PEREFIX."_articles WHERE art_id = $tid $options"));
		if ($check == 0) 
			$error .= '<li />Нет такой статьи!';
	}

	if ($header == '') $error .= '<li />Нет заголовка!';
	if ($body == '') $error .= '<li />Нет текста!';
	//if ($cat == '') $error .= '<li />Не выбран блог!'; Добавляем в личный блог
	if (strlen ($header) > 90) $error .= '<li />Слишком длинный заголовок!';
	if (strlen ($body) > 15000) $error .= '<li />Слишком длинный текст!';
	
	if ($error == "") 
	{
		if ($tid == 0) 
		{
			$add = $db->query ("INSERT INTO ".DB_PEREFIX."_articles VALUES (0, '$cat', '$header', '$body', '$author', '".time()."', '$comments', '', '', '$public', 'no', '$visible', '$tags', '0', '', '0', '$auto_tag')");
			if ($add) 
			{
				site_message ('Статья добавлена!');	
				// HACK: Очищаем кэш
				clear_cached('excl_last_posts.php');
					
				if ($MODULE['public_now']) 
				{
					ob_end_clean();
					header ('Location: /blog/'.mysql_insert_id().'.html');	
				}			
			}
			else 
				site_error ('Ошибка БД!');
		} 
		else 
		{
			$update = $db->query ("UPDATE ".DB_PEREFIX."_articles SET
				art_header = '$header',
				art_category = '$cat',
				art_body = '$body',
				art_visible = '$visible',
				art_tags = '$tags',
				auto_tag = '$auto_tag'
				WHERE art_id = $tid");

			if ($update) 
			{
				site_message ('Статья сохранена!');
				
				if ($MODULE['public_now']) 
				{	
					ob_end_clean();
					header ('Location: /blog/'.$tid.'.html');	
				}
			}
			else 
				site_error ('Ошибка БД!');
		}
	}
	else 
		site_error ('При добавлении статьи возникли следующие ошибки:'.$error);
}



if ($_GET['act'] == 'save_blog') 
{
	$name = addslashes (strip_tags ($_POST['name']));
	$header = addslashes (strip_tags ($_POST['header']));
	$desc = addslashes (strip_tags ($_POST['desc']));
	$tid = intval ($_POST['tid']);
	
	$error = '';
	
	if ($header == '') $error .= '<li>Не указано название блога!';
	
	if ($tid == 0) 
	{
		if (!preg_match('#^[a-z0-9_]{3,16}+$#', $name)) $error .= '<li>Имя блога не соответствует формату!';
		// FIXME: Маразм
		$today = $db->num_rows ($db->query ("SELECT * FROM ".DB_PEREFIX."_art_category WHERE cat_author = '{$GLOBAL_USER['user_id']}' AND cat_date > '".(time() - (60 * 60 * (date("H")) + ( 60 * date("i"))  ))."'"));
		$clone = $db->num_rows ($db->query ("SELECT * FROM ".DB_PEREFIX."_art_category WHERE cat_name = '$name'"));
		
		if ($today > 0 && !is_admin() && !is_moderator()) $error .= '<li>Вы не можете создавать более одного блога в день!';
		if ($clone > 0) $error .= '<li>Блог с таким именем уже существует!';
		
		if (!is_admin() && my_karma() < $MODULE['new_blog_karma']) 
			$error .= '<li>У Вас слишком маленькая карма, чтобы создавать блог!';
	}
	else 
	{
		if (!is_admin() && !is_moderator()) 
		{
			// FIXME: Маразм
			$check = $db->num_rows ($db->query ("SELECT * FROM ".DB_PEREFIX."_art_category WHERE cat_author = '{$GLOBAL_USER['user_id']}' AND cat_id = '$tid'"));
			
			if ($check != 1) $error .= '<li>Вы, наверное, ошиблись. У Вас нет такого блога.';
		}
	}
	
	
	if ($_FILES['avatar']['name'] != '' && eregi('[A-Za-z0-9]\.(jpeg|jpg|gif|png|bmp|JPEG|JPG|GIF|PNG|BMP)', $_FILES['avatar']['name'])) 
	{
		if (copy($_FILES['avatar']['tmp_name'], 'include/cache/'.$_FILES['avatar']['name'])) 
			save_image ('include/cache/'.$_FILES['avatar']['name'], $name);
		else 
			$error .= '\n<li>Ошибка загрузки файла!';
	}
	
	if ($error == "") 
	{
		if ($tid == 0) 
		{
			$insert = $db->query ("INSERT INTO ".DB_PEREFIX."_art_category VALUES (0, '$name', '$header', '$desc', '0', 0, '".time()."', 'yes', '{$GLOBAL_USER['user_id']}')");

			if ($insert) 
			{
				$id = mysql_insert_id ();
				$user_blogs = trim($GLOBAL_USER['user_blogs']);
				
				($user_blogs == '' || $user_blogs == ',') 
					? $new = $id 
					: $new = $user_blogs.','.$id;
					
				$db->query ("UPDATE ".DB_PEREFIX."_users SET user_blogs = '$new' WHERE user_id = ".$GLOBAL_USER['user_id']);
				$db->query ("UPDATE ".DB_PEREFIX."_art_category SET cat_users = '1' WHERE cat_id = ".$id);
				site_message ('Блог создан!');
			}
			else 
				site_error ('Ошибка БД при создании блога!');
		} 
		else 
		{
			$db->query ("UPDATE ".DB_PEREFIX."_art_category SET cat_header = '$header', cat_description = '$desc' WHERE cat_id = $tid");
			site_message ('Блог сохранен!');
		}
	}
	else 
		site_error ($error);
	
}



if (isset($_GET['id']) && $RUN['params'][0] == "edit") 
{
	(is_moderator() || is_admin ()) 
		? $option = '' 
		: $option = "art_author = '".$GLOBAL_USER['user_id']."' AND";
	
	$get_art = $db->query ("SELECT * FROM ".DB_PEREFIX."_articles WHERE $option art_id = '$id'");
	
	if ($db->num_rows ($get_art) == 0) error_404 ();
			
	$art = $db->fetch_array ($get_art);
		
	$PAGE_TITLE = 'Изменить статью';
		
	add_art ($id,
			$art['art_header'],
			$art['art_category'],
			$art['art_community'],
			$art['art_description'],
			clear_danger_html ($art['art_body']),
			$art['art_tags'],
			$art['art_comments'],
			$art['auto_tag']);
	
}
elseif (isset($_GET['edit_blog'])) 
{

	$get_blog = $db->query ("SELECT cat_name, cat_header, cat_description FROM ".DB_PEREFIX."_art_category WHERE cat_id = '".intval($_GET['edit_blog'])."' AND cat_author = ".$GLOBAL_USER['user_id']);
	
	if ($db->num_rows ($get_blog) == 0) 
		error_404 ();

	list ($name, $header, $desc) = $db->fetch_row ($get_blog);
		
	add_blog (intval ($_GET['edit_blog']), $name, $header, $desc);

}
elseif ($RUN['params'][0] == 'add') 
{
	$PAGE_TITLE = 'Добавить статью';
	if (my_karma() >= $MODULE['new_art_karma']) 
		add_art ();
	else 
		site_error ('У Вас слишком маленькая карма, чтобы писать статьи!');
}
elseif ($RUN['params'][0] == 'new_blog') 
{
	
	$PAGE_TITLE = 'Новый блог';
	
	if (my_karma() >= $MODULE['new_blog_karma']) 
		add_blog ();
	else 
		site_error ('У Вас слишком маленькая карма, чтобы создавать блог!');
}
else 
{

	$PAGE_TITLE = 'Управление моими статьями';
	$get_blogs = $db->query ("SELECT cat_id, cat_header FROM ".DB_PEREFIX."_art_category WHERE cat_author = '".$GLOBAL_USER['user_id']."'");
	
	if ($db->num_rows ($get_blogs) > 0) 
	{
		$list = 'Управление моими блогами: ';
		while (list($tid, $header) = $db->fetch_array ($get_blogs)) $list .= "<a href=\"/blog/add/?edit_blog=$tid\">$header</a>, ";
		simple_table (substr ($list, 0, strlen($list)-2));
	}
	
	
	past_articles ('blog/edit', $GLOBAL_USER['user_id']);
}


// Функция вывода формы добавления блога
function add_blog ($id=0, $name='', $header='', $desc='') 
{
	global $db;
	
	if ($header == '') $header = strip_tags($_POST['header']);
	if ($desc == '') $desc = strip_tags($_POST['desc']);
	if ($name == '') $name = strip_tags($_POST['name']);
	
	if ($id == 0) 
	{ 
		$title = 'Новый'; 
		$act = "new_blog/?act=save_blog"; 
	}
	else 
	{ 
		$disabled = "disabled /><input type=\"hidden\" name=\"name\" value=\"$name\" "; 
		$title = 'Изменить'; 
		$act = '?act=save_blog'; 
	}

	
	$form .= "\n\n<form action=\"/blog/edit/$act\" method=\"post\" name=\"record\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"tid\" value=\"$id\">
<table width=\"100%\" style=\"width:100%\" cellspacing=\"0\" cellpadding=\"4\">
	<tr>
		<td width=\"15%\" valign=\"top\">Имя блога:</td>
		<td>
			<input type=\"text\" name=\"name\" style=\"width:100%\" value=\"$name\" $disabled />
			<br /><span class=\"help\">Имя должно содержать <u>только</u> латинские буквы, без пробелов и других символов (желательно без цифр). Длина от 3-х до 16-ти символов</span>
		</td>
	</tr>
	<tr>
		<td width=\"15%\" valign=\"top\">Название блога:</td>
		<td>
			<input type=\"text\" name=\"header\" style=\"width:100%\" value=\"$header\" />
			<br /><span class=\"help\">Коротко и со смыслом.</span>
		</td>
	</tr>
	<tr>
		<td width=\"15%\" valign=\"top\">Описание:</td>
		<td><textarea name=\"desc\" rows=\"8\" style=\"width:100%\">$desc</textarea></td>
	</tr>
	<tr>
		<td width=\"15%\" valign=\"top\">Аватар:</td>
		<td><input type=\"file\" name=\"avatar\" /></td>
	</tr>
	<tr>
		<td colspan=\"2\"><br /><input style=\"width:240px\" type=\"submit\" name=\"submit\" value=\"Сохранить\" class=\"button\" /></td>
	</tr>
</table><br />
</form>\n\n";

	past_table ("$title блог", $form);
	
	come_back ("моим статьям", "/blog/edit/");
}


// Функция вывода формы добавления поста
function add_art ($id = 0,
			$header = '',
			$cat = '',
			$community = 0,
			$desc = '',
			$full = '',
			$tags = '',
			$comm = 'on',
			$auto_tag = 'yes') {
			
	global $db, $GLOBAL_USER;
	
	if ($header == '') $header = strip_tags($_POST['header']);
	if ($full == '') $full = htmlspecialchars($_POST['big_text']);
	if ($tags == '') $tags = strip_tags($_POST['tags']);
	
	$full = replace_symbols ($full);
	$full = str_replace ('&', '&amp;', $full);
	
	($comm == "on") 
		? $comm = "checked" 
		: $comm ="";

	($auto_tag == "yes") 
		? $auto_tag = "checked" 
		: $auto_tag ="";
		
	if ($id == 0) 
	{ 
		$title = "Добавить"; 
		$act = "add/?act=save"; 
	}
	else 
	{ 
		$title = "Изменить"; 
		$act = "add/?act=save"; 
	}
	
	include "static/editor.html";
	
	$form .= "\n\n<form action=\"/blog/edit/$act\" method=\"post\" name=\"record\">
<input type=\"hidden\" name=\"tid\" value=\"$id\">
<table width=\"100%\" style=\"width:100%\" cellspacing=\"0\" cellpadding=\"4\">
	<tr>
		<td width=\"15%\" valign=\"top\">Заголовок:</td>
		<td>
			<input type=\"text\" name=\"header\" style=\"width:100%\" value=\"$header\" />
			<br /><span class=\"help\">Заголовок должен быть максимально коротким и наиболее конкретно отображать тему статьи.</span>
		</td>
	</tr>
	<tr>
		<td>В блог:</td>
		<td>".blogs($cat);
	if ($GLOBAL_USER['user_blogs'] == "") 
		$form .= '<span class="help">Если Вы не можете выбрать блог, то это значит, что Вы не вступили ни в один блог.';
	$form .= '
	  </td>
	</tr>
	<tr>
		<td colspan="2" style="padding-top: 10px">';
			
$form .= '
	<div id="panel" class="panel">
		 <a href="#" onclick="insert_text_b(); return false;" class="buttn">
		 	<img src="/images/editor/bold_ru.gif" width="20" height="20" alt=" " title="жирный">
		 </a>
		 <a href="#" onclick="insert_text_i(); return false;" class="buttn">
		 	<img src="/images/editor/italic_ru.gif" width="20" height="20" alt=" " title="курсив">
		 </a>
		 <a href="#" onclick="insert_text_u(); return false;" class="buttn">
		 	<img src="/images/editor/underline_ru.gif" width="20" height="20" alt=" " title="подчеркнутый">
		 </a>
		 <a href="#" onclick="insert_text_s(); return false;" class="buttn">
		 	<img src="/images/editor/strikethrough.gif" width="20" height="20" alt=" " title="зачеркнуть">
		 </a>
		 <a href="#" onclick="insert_text_link(); return false;" class="buttn">
		 	<img src="/images/editor/link.gif" width="20" height="20" alt=" " title="вставить ссылку">
		 </a>
		 <a href="#" onclick="insert_text_blockquote(); return false;" class="buttn">
		 	<img src="/images/editor/indent.gif" width="20" height="20" alt=" " title="отступ">
		 </a>
		 <a href="#" onclick="insert_text_quote(); return false;" class="buttn">
		 	<img src="/images/editor/laquo.gif" width="20" height="20" alt=" " title="кавычки" id="quoteimg">
		 </a>
		 <a href="#" onclick="insert_text_mdash(); return false;" class="buttn">
		 	<img src="/images/editor/mdash.gif" width="20" height="20" alt=" " title="тире">
		 </a>
		 <a href="#" onclick="insert_text_img(); return false;" class="buttn">
		 	<img src="/images/editor/image.gif" width="20" height="20" alt=" " title="вставить изображение">
		 </a>
		 <a href="#" onclick="insert_text_youtube(); return false;" class="buttn">
		 	<img src="/images/editor/video.gif" width="20" height="20" alt=" " title="вставить видео с YouTube">
		 </a>
		 <a href="#" onclick="insert_text_rutube(); return false;" class="buttn">
		 	<img src="/images/editor/rutube.gif" width="20" height="20" alt=" " title="вставить видео с RuTube">
		 </a>
		 <a href="#" onclick="text_undo(); return false;" class="buttn">
		 	<img src="/images/editor/undo_grey.gif" width="20" height="20" alt=" " title="отменить" id="undoimg">
		 </a>
	</div>';
			
			
			$form .= "
			<textarea id=\"htmlarea\" class=\"htmlarea\" onkeypress=\"text_clear_undo()\" style=\"height: 300px; width: 100%;\" name=\"big_text\">$full</textarea>
			<span class=\"help\">Для отделение описания от основного текста используйте тег <strong>&lt;cut&gt;</strong>. Так же можно использовать html-теги.</span>
			 <div style=\"background: url(/images/editor/statusbar_resize.gif); width: 11px; height: 20px; float: right; cursor: nw-resize\" onmousedown=\"resize_start(event); return false;\" onmouseup=\"resize_stop\"></div>
	</td>
	</tr>
	<tr>
		<td valign=\"top\"><br />Теги:</td>
		<td>
			<br /><input type=\"text\" name=\"tags\" id=\"tags\" style=\"width:100%;\" class=\"form\" value=\"$tags\" /><span class=\"help\">Добавьте несколько (3-5) ключевых слов <u>через запятую</u>, наиболее конкретно характеризующих статью .</span>
	  </td>
	</tr>
	<tr>
		<td colspan=\"2\"><br /><input type=\"checkbox\" name=\"comment\" value=\"on\" id=\"com\" $comm /> <label for=\"com\">Разрешить комментарии</label></td>
	</tr>
	<tr>
		<td colspan=\"2\"><input type=\"checkbox\" name=\"auto_tag\" value=\"yes\" id=\"auto_tag\" $auto_tag /> <label for=\"auto_tag\">Включить автоматический перенос строк.</label></td>
	</tr>
	<tr>
		<td colspan=\"2\"><br /><input style=\"width:240px\" type=\"submit\" name=\"submit\" value=\"Сохранить\" class=\"button\" /></td>
	</tr>
</table><br />
</form>\n\n";
	
	past_table ("$title статью", $form);
	
	come_back ("моим статьям", "/blog/edit/");
}



// Функция по выводу списка блогов
function blogs ($name) 
{
	global $db, $GLOBAL_USER, $MODULE;
	$string = '<select name="category" style="width:100%;"><option value="">Личный блог</option>';
	
	if ($MODULE['view_all_blogs']	) 
	{
	
		$get = $db->query ("SELECT cat_name, cat_header FROM ".DB_PEREFIX."_art_category WHERE allow_users = 'yes' ORDER BY cat_header");
		
		while (list($name_, $title) = $db->fetch_row ($get)) 
		{
			($name == $name_) 
				? $string .= "\n\t\t<option value=\"$name_\" selected>$title</option>" 
				: $string .= "\n\t\t<option value=\"$name_\">$title</option>";
		}
		
	
	} else {
		$blogs = explode (",", $GLOBAL_USER['user_blogs']);
		foreach ($blogs as $blog) {
			$blog = trim($blog);
			if ($blog != "") {
				$get = $db->query ("SELECT cat_id, cat_name, cat_header FROM ".DB_PEREFIX."_art_category WHERE cat_id = '$blog'");
				list($id_, $name_, $title) = $db->fetch_row ($get);
				($name == $name_) 
					? $string .= "\n\t\t<option value=\"$name_\" selected>$title</option>" 
					: $string .= "\n\t\t<option value=\"$name_\">$title</option>";
			} 
		}
	}	
	
	return $string."\n\t</select>"; 
}

function save_image ($src, $name) 
{
	if (!file_exists($src) || $src == "") return false;
	
	$name = "images/blogs/$name.jpg";
	
	if(eregi('[A-Za-z0-9]\.(jpeg|jpg|JPEG|JPG)', $src)) 
	{
		$thumbbase = imagecreatefromjpeg($src);
	}
	elseif(eregi('[A-Za-z0-9]\.(gif|GIF)', $src)) 
	{
		$thumbbase = imagecreatefromgif($src);
	}
	elseif(eregi('[A-Za-z0-9]\.(png|PNG)', $src)) 
	{
		$thumbbase = imagecreatefrompng($src);
	}
	elseif(eregi('[A-Za-z0-9]\.(bmp|wbmp|BMP|wbmp)', $src)) 
	{
		$thumbbase = imagecreatefromwbmp($src);
	}
	else exit;
	
	$width		= imagesx($thumbbase);
	$height	= imagesy($thumbbase);
	
	if ($width > 75 && $height > 75) 
	{
		$k = max($width/75, $height/75);
		$new_width = intval($width / $k);
		$new_height = intval($height / $k);
	}
	else 
	{
		$new_width = $width;
		$new_height = $height;
	}
	
	$thumb = imagecreatetruecolor ($new_width, $new_height);
	imagecopyresampled($thumb, $thumbbase, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
	
	if (imagejpeg($thumb, $name, 90)) 
	{
		imagedestroy($thumb);
		imagedestroy($thumbbase);
		@unlink ($src);
		return true;
	}
	return false;
}

